﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Turismo.Negocio.EntidadesGeometricas;
using Persistencia;
using Persistencia.NHibernate;
using System.ComponentModel.DataAnnotations;

namespace Turismo.Areas.GestionRuta.Models
{
    public class BuscarRutaModel
    {
        private IRepositorio miPersistencia;

        public IRepositorio Persistencia
        {
            get
            {
                if (miPersistencia == null)
                {
                    miPersistencia = NHibernatePersistencia.Instancia;
                }
                return miPersistencia;
            }
            set { miPersistencia = value; }
        }

        public BuscarRutaModel()
        {
            var listaTemp = (from a in Persistencia.Listar<Cabecera>()
                             select a).ToList().OrderBy(a=>a.Nombre);
            ListaCabeceraInicial = new SelectList(listaTemp.OrderBy(a => a.Nombre), "Id", "Nombre");
            ListaCabeceraFinal = new SelectList(listaTemp.OrderBy(a => a.Nombre), "Id", "Nombre");

        }

        private List<int> miTransporteIds;

        public List<int> TransporteIds
        {
            get { return miTransporteIds; }
            set { miTransporteIds = value; }
        }

        private List<TipoDeTransporte> miTiposDeTransporte;

        public List<TipoDeTransporte> TiposDeTransporte
        {
            get 
            {
                if (miTiposDeTransporte == null)
                {
                    TipoDeTransporte tipo1 = new TipoDeTransporte();
                    tipo1.Id = 1;
                    tipo1.Descripcion = "Publico";
                    TipoDeTransporte tipo2 = new TipoDeTransporte();
                    tipo2.Id = 2;
                    tipo2.Descripcion = "Privado";
                   
                    miTiposDeTransporte = new List<TipoDeTransporte>();
                    miTiposDeTransporte.Add(tipo1);
                    miTiposDeTransporte.Add(tipo2);
                    

                }
                return miTiposDeTransporte; 
            }
            set { miTiposDeTransporte = value; }
        }        

        private SelectList miListaCabeceraInicial;

        public SelectList ListaCabeceraInicial
        {
            get { return miListaCabeceraInicial; }
            set { miListaCabeceraInicial = value; }
        }

        [Required(ErrorMessage="Se requiere una cabecera origen")]
        public int CabeceraInicialId { get; set; }


        private SelectList miListaCabeceraFinal;

        public SelectList ListaCabeceraFinal
        {
            get { return miListaCabeceraFinal; }
            set { miListaCabeceraFinal = value; }
        }

        [Required(ErrorMessage = "Se requiere una cabecera destino")]
        public int CabeceraFinalId { get; set; }

        public String ImportanciaTiempo { get; set; }
        public String ImportanciaDinero { get; set; }
        public Int16 NumeroDePasajeros { get; set; }


        
        
    }
}